diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + return ResponseData.success(); + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + + int updateStatusById(CaseInfoRequest caseInfoRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 33cce3f..95b8eee 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -11,6 +11,13 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector ################### mybatis-plus配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + map-underscore-to-camel-case: true ################### guns配置 ################### casic: swagger-open: false #是否开启swagger (true/false) diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 33cce3f..95b8eee 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -11,6 +11,13 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector ################### mybatis-plus配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + map-underscore-to-camel-case: true ################### guns配置 ################### casic: swagger-open: false #是否开启swagger (true/false) diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx new file mode 100644 index 0000000..5c8f135 --- /dev/null +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 33cce3f..95b8eee 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -11,6 +11,13 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector ################### mybatis-plus配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + map-underscore-to-camel-case: true ################### guns配置 ################### casic: swagger-open: false #是否开启swagger (true/false) diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx new file mode 100644 index 0000000..5c8f135 --- /dev/null +++ b/casic-web/src/main/resources/config/export/DeviceTemp.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 new file mode 100644 index 0000000..bbff532 --- /dev/null +++ b/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx Binary files differ diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 33cce3f..95b8eee 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -11,6 +11,13 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector ################### mybatis-plus配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + map-underscore-to-camel-case: true ################### guns配置 ################### casic: swagger-open: false #是否开启swagger (true/false) diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx new file mode 100644 index 0000000..5c8f135 --- /dev/null +++ b/casic-web/src/main/resources/config/export/DeviceTemp.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 new file mode 100644 index 0000000..bbff532 --- /dev/null +++ b/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx 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 new file mode 100644 index 0000000..c1b521a --- /dev/null +++ b/casic-web/src/main/resources/config/export/staffTemp.xlsx Binary files differ diff --git a/casic-server/pom.xml b/casic-server/pom.xml index c150a12..67a92aa 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -30,10 +30,15 @@ provided + com.casic + casic-file-support + ${admin.version} + + + org.springframework.boot spring-boot-starter-web ${boot.version} - provided @@ -56,6 +61,11 @@ netty-all 4.1.42.Final + + com.casic + casic-export-support + ${extension.version} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java new file mode 100644 index 0000000..c46f536 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/AssetInfoController.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 资产管理Controller + * @Author: wangpeng + * @Date: 2022/7/22 10:47 + */ +@Slf4j +@RestController +@RequestMapping("/assetInfo") +public class AssetInfoController extends ExportController { + @Autowired + private AssetInfoService assetInfoService; + + /** + * 资产管理列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody AssetInfoRequest assetInfoRequest) { + Page page = PageFactory.defaultPage(); + List assetInfos = assetInfoService.assetInfoListPage(page, assetInfoRequest); + page.setRecords(assetInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 资产管理增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody AssetInfo assetInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(assetInfoService.addAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增资产异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(assetInfoService.updateAssetInfo(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新资产异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteAssetInfol(assetInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(assetInfoService.deleteBatchAssetInfo(assetInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除资产异常"); + } + return null; + } + + /** + * 资产管理批量导出 + */ + + /** + * 资产管理批量导入 + */ +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java new file mode 100644 index 0000000..a27f9f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/BlackListController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 黑名单管理Controller + * @Author: wangpeng + * @Date: 2022/7/25 10:35 + */ +@Slf4j +@RestController +@RequestMapping("/blackInfo") +public class BlackListController extends ExportController { + @Autowired + private BlackInfoService blackInfoService; + + /** + * 黑名单列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody BlackInfoRequest blackInfoRequest) { + Page page = PageFactory.defaultPage(); + List blackInfos = blackInfoService.blackInfoListPage(page, blackInfoRequest); + page.setRecords(blackInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 黑名单增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody BlackInfo blackInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return blackInfoService.addBlackInfo(blackInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return blackInfoService.updateBlackInfo(blackInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBlackInfo(blackInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return blackInfoService.deleteBatchBlackInfo(blackInfo); + } + return null; + } + +} 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 new file mode 100644 index 0000000..cc6b060 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -0,0 +1,115 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +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; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 安防事件管理Controller + * @Author: wangpeng + * @Date: 2022/7/18 9:51 + */ +@Slf4j +@RestController +@RequestMapping("/caseInfo") +public class CaseInfoController extends ExportController { + @Autowired + private CaseInfoService caseInfoService; + + /** + * 安防事件列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object list(@RequestBody CaseInfoRequest caseInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = caseInfoService.caseInfoListPage(page, caseInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 编辑事件状态 + */ + @PostMapping("/update") + @ResponseBody + public Object updateStatus(@RequestBody CaseInfoRequest caseInfoRequest) { + if (caseInfoService.updateStatus(caseInfoRequest) > 0) { + return ResponseData.success(); + } + return ResponseData.error("更新异常"); + } + + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(CaseInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getHazardLevelCode()) || StrUtil.isEmpty(data.getCategoryLevelCode()) + || StrUtil.isEmpty(data.getDeviceCode()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("安防事件:批量导出文件异常,异常信息:{}", ex.getMessage()); + } + List list = caseInfoService.addCaseInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * excel模板导出 + */ + @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(); + } + } + +} 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 new file mode 100644 index 0000000..a549d1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -0,0 +1,66 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 安防事件类别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:03 + */ +@RestController +@RequestMapping("/caseTypeInfo") +public class CategoryLevelController extends ExportController { + @Autowired + private CategoryLevelService categoryLevelService; + /** + * 事件类别配置列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody CategoryLevelRequest categoryLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = categoryLevelService.categoryLevelListPage(page, categoryLevelRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件类别配置列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { + List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + return ResponseData.success(caseCategoryLevels); + } + + /** + * 事件类别配置增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseCategoryLevel caseCategoryLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return categoryLevelService.addCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return categoryLevelService.updateCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteCategoryLevel(caseCategoryLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return categoryLevelService.deleteBatchCategoryLevel(caseCategoryLevel.getIds()); + } + return null; + } + +} 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 new file mode 100644 index 0000000..bd2b575 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -0,0 +1,247 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.*; +import com.casic.missiles.modular.dto.hik.DoorControlRequest; +import com.casic.missiles.modular.enums.HikUri; +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; + +/** + * @Description: 设备管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 11:37 + */ +@Slf4j +@RestController +@RequestMapping("/deviceInfo") +public class DeviceController extends ExportController { + @Autowired + private DeviceInfoService deviceInfoService; + + /** + * 设备列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { + Page page = PageFactory.defaultPage(); + List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + page.setRecords(deviceInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 设备增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteDeviceInfo(deviceInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteBatchDeviceInfo(deviceInfo.getIds()); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(DeviceInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getDevCode()) || StrUtil.isEmpty(data.getDevType()) + || StrUtil.isEmpty(data.getDevName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("设备:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = deviceInfoService.addDeviceInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + + /** + * 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") + @ResponseBody + public Object RepairListPage(@RequestBody DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLogDTOS = deviceInfoService.deviceRepairListPage(deviceRepairRequest); + Page page = PageFactory.defaultPage(); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), deviceRepairLogDTOS); + return ResponseData.success(super.packForBT(pages)); + } + + /** + * 设备维修管理,增加、删除 + */ + @PostMapping("/repair/{operation}") + @ResponseBody + public Object repairOperation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceRepairLog deviceRepairLog) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(deviceInfoService.addDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增异常"); + } else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(deviceInfoService.deleteDevicePairLog(deviceRepairLog) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除异常"); + } + return null; + } + + /** + * 设备维修详情 + */ + @PostMapping("/repair/detail") + @ResponseBody + public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 闸机通道管理,即闸机分组管理 + */ + @PostMapping("/gateGroup/listPage") + @ResponseBody + public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { + Page page = PageFactory.defaultPage(); + List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); + return ResponseData.success(list); + } + + /** + * 闸机分组增删改 + */ + @PostMapping("/gateGroup/{operation}") + @ResponseBody + public Object gateGroupOperation(@PathVariable(name = "operation") String operateType, @RequestBody GateGroupDTO gateGroupDTO) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return deviceInfoService.addGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return deviceInfoService.updateGateGroupDTO(gateGroupDTO); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return deviceInfoService.deleteGateGroupDTO(gateGroupDTO); + } + return null; + } + + /** + * 闸机通道状态控制 + */ + @PostMapping("/gateGroup/statusControl") + @ResponseBody + public Object gateStatusControl(@RequestBody GateGroupDTO gateGroupDTO) { + // TODO: 2022/7/27 海康门禁点反控需要门禁点唯一标识,需到现场导出海康一份再录入咱们平台使用(与设备编号关联上) + // TODO: 2022/7/27 门禁状态字典要与海康的状态相同 + //0: 常开 + //1: 门闭 + //2: 门开 + //3: 常闭 + + //通过分组id获取闸机编号列表 + List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + if(CollectionUtils.isEmpty(deviceCodes)){ + log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); + return ResponseData.error("不存在分组下的闸机编号"); + } + //海康门禁点反控 + DoorControlRequest doorControlRequest = new DoorControlRequest(); + //需根据设备编号获取到对应的门禁点唯一标识 +// doorControlRequest.setDoorIndexCodes(); + doorControlRequest.setControlType(Integer.valueOf(gateGroupDTO.getStatus())); + String body = JSONObject.toJSONString(deviceCodes); + String resultStr = HikUtil.hikApi(HikUri.DOOR_CONTROL, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,门禁点反控失败,海康response:{}", resultStr); + return ResponseData.error("门禁点反控失败"); + } + List hikDataList = (List) resultJson.get("data"); + List failControlList = new ArrayList<>(); + hikDataList.forEach(data -> { + if(0 != (Integer)data.get("controlResultCode")){ + failControlList.add(String.valueOf(data.get("doorIndexCode"))); + } + }); + if(!CollectionUtils.isEmpty(failControlList)){ + return ResponseData.error("门禁点:" + failControlList + "反控失败"); + } + 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 new file mode 100644 index 0000000..1a306ef --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.FireEquipInfo; +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; + +/** + * @Description: 消防器材管理 + * @Author: wangpeng + * @Date: 2022/7/27 14:11 + */ +@Slf4j +@RestController +@RequestMapping("/fireEquip") +public class FireEquipController extends ExportController { + @Autowired + private FireEquipService fireEquipService; + + /** + * 消防器材列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody FireEquipRequest fireEquipRequest) { + Page page = PageFactory.defaultPage(); + List fireEquipInfos = fireEquipService.fireEquipInfoListPage(page, fireEquipRequest); + page.setRecords(fireEquipInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 消防器材增删改 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody FireEquipInfo fireEquipInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return fireEquipService.addFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return fireEquipService.updateFireEquipInfo(fireEquipInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return fireEquipService.deleteFireEquipInfo(fireEquipInfo); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(FireEquipInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getEquipCode()) || StrUtil.isEmpty(data.getEquipType()) + || StrUtil.isEmpty(data.getEquipName()) || StrUtil.isEmpty(data.getProductDate()) + || StrUtil.isEmpty(data.getExpireDate()) || StrUtil.isEmpty(data.getQualityDate()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("消防器材:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = fireEquipService.addFireEquipInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + 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 new file mode 100644 index 0000000..f707962 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -0,0 +1,63 @@ +package com.casic.missiles.modular.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @Description: 安防事件级别Controller + * @Author: wangpeng + * @Date: 2022/7/18 14:02 + */ +@RestController +@RequestMapping("/caseLevelInfo") +public class HazardLevelController extends ExportController { + @Autowired + private HazardLevelService hazardLevelService; + /** + * 事件危险级别配置列表(分页) + * @return + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody HazardLevelRequest hazardLevelRequest) { + Page page = PageFactory.defaultPage(); + List caseHazardLevels = hazardLevelService.hazardLevelListPage(page, hazardLevelRequest); + page.setRecords(caseHazardLevels); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 事件危险级别配置列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { + List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + return ResponseData.success(caseHazardLevels); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody CaseHazardLevel caseHazardLevel) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return hazardLevelService.addHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return hazardLevelService.updateHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteHazardLevel(caseHazardLevel); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return hazardLevelService.deleteBatchHazardLevel(caseHazardLevel.getIds()); + } + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java new file mode 100644 index 0000000..b58ccab --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/StaffController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 员工管理Controller + * @Author: wangpeng + * @Date: 2022/7/19 17:10 + */ + +@Slf4j +@RestController +@RequestMapping("/staffInfo") +public class StaffController extends ExportController { + @Autowired + private StaffInfoService staffInfoService; + + /** + * 员工列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody StaffInfoRequest staffInfoRequest) { + Page page = PageFactory.defaultPage(); + List caseInfos = staffInfoService.staffInfoListPage(page, staffInfoRequest); + page.setRecords(caseInfos); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 员工列表(不分页) + * @return + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody StaffInfoRequest staffInfoRequest) { + List staffInfos = staffInfoService.staffInfoList(staffInfoRequest); + return ResponseData.success(staffInfos); + } + + /** + * 员工管理,增加、编辑、删除 + */ + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody StaffInfo staffInfo) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + return staffInfoService.addStaffInfo(staffInfo); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + return staffInfoService.updateStaffInfo(staffInfo); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteStaffInfo(staffInfo); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + return staffInfoService.deleteBatchStaffInfo(staffInfo.getIds()); + } + return null; + } + + /** + * 根据员工编号查员工信息 + */ + @PostMapping("/staffSearch") + @ResponseBody + public Object staffSearch(@RequestBody StaffInfo staffInfo) { + StaffInfo info = staffInfoService.selectStaffInfoByCode(staffInfo); + return ResponseData.success(info); + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(StaffInfo.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getStaffType()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("员工:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = staffInfoService.addStaffInfoBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java new file mode 100644 index 0000000..a7cf1f8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorApplyController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.enums.OperateTypeEnum; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 访客管理 + * @Author: wangpeng + * @Date: 2022/7/19 19:32 + */ + +@Slf4j +@RestController +@RequestMapping("/applicationInfo") +public class VisitorApplyController extends ExportController { + // TODO: 2022/7/23 访客申请增删改同时要增删改海康的预约,修改访客预约v2接口,取消操作使用取消访客预约 + @Autowired + private VisitorApplyService visitorApplyService; + /** + * 访问申请列表(分页) + */ + @PostMapping("/listPage") + @ResponseBody + public Object listPage(@RequestBody VisitorApplyRequest applyRequest) { + Page page = PageFactory.defaultPage(); + List caseCategoryLevels = visitorApplyService.visitorApplyListPage(page, applyRequest); + page.setRecords(caseCategoryLevels); + return ResponseData.success(super.packForBT(page)); + } + + @PostMapping("/{operation}") + @ResponseBody + public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody VisitorApply visitorApply) { + if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + if(visitorApplyService.addVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增访问申请异常"); + }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ + if(visitorApplyService.updateVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新访问申请异常"); + }else if(OperateTypeEnum.DELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteVisitorApply(visitorApply) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + }else if(OperateTypeEnum.BATCHDELETE.getOperateType().equals(operateType)){ + if(visitorApplyService.deleteBatchVisitorApply(visitorApply.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除访问申请异常"); + } + return null; + } + + /** + * 批量导入 + */ + @PostMapping("/batchImport") + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + try { + results = this.importExcel(VisitorApply.class, file, null, (data) -> { + if (StrUtil.isEmpty(data.getStaffCode()) || StrUtil.isEmpty(data.getStaffName()) + || StrUtil.isEmpty(data.getIdCard()) || StrUtil.isEmpty(data.getVisitorName()) + ) { + return false; + } + return true; + }); + } catch (IOException ex) { + log.error("访客申请:批量导入文件异常,异常信息:{}", ex.getMessage()); + } + List list = visitorApplyService.addVisitorApplyBatch(results); + if (CollectionUtil.isNotEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + return ResponseData.success(); + } + +} 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 new file mode 100644 index 0000000..15d0e30 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.controller.hik; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dto.hik.*; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.enums.SecurityEventType; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import com.casic.missiles.modular.util.CaseInfoFactoryUtil; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 海康事件Controller + * @Author: wangpeng + * @Date: 2022/7/20 17:29 + */ +@Slf4j +@RestController +@RequestMapping("/hik") +public class HikController { + + @Autowired + private CaseInfoFactoryUtil caseInfoFactoryUtil; + + @Autowired + private CaseInfoService caseInfoService; + + @Autowired + private HikFaceGroupInfoService hikFaceGroupInfoService; + + @Value("${server.port}") + private int serverPort; + + /** + * 海康事件订阅 + */ + @PostMapping("/event/subscribe") + @ResponseBody + public Object eventSubscribe() throws UnknownHostException { + EventSubscribeRequest eventSubscribeRequest = new EventSubscribeRequest(); + ArrayList list = new ArrayList<>(); + list.add(SecurityEventType.DEVICE_OFFLINE); + list.add(SecurityEventType.KEY_PERSONNEL_IDENTIFY_EVENT); + list.add(SecurityEventType.MONITORING_POINT_OFFLINE); + list.add(SecurityEventType.PERSONNEL_DEMOBILIZED_EVENT); + list.add(SecurityEventType.PERSONNEL_GATHER_EVENT); + InetAddress localHost = InetAddress.getLocalHost(); + eventSubscribeRequest.setEventTypes(list); + eventSubscribeRequest.setEventDest("https://" + localHost + ":" + serverPort + "/eventRcv"); + //订阅类型,0-订阅原始事件,1-联动事件,2-原始事件和联动事件,不填使用默认值0 + eventSubscribeRequest.setSubType(0); + /** + * 事件等级,0-未配置,1-低,2-中,3-高 + * 此处事件等级是指在事件联动中配置的等级 + * 订阅类型为0时,此参数无效,使用默认值0 + * 在订阅类型为1时,不填使用默认值[1,2,3] + * 在订阅类型为2时,不填使用默认值[0,1,2,3] + * 数组大小不超过32,事件等级大小不超过31 + */ +// eventSubscribeDTO.setEventLvl(0); + String body = JSONObject.toJSONString(eventSubscribeRequest); + String result = HikUtil.hikApi(HikUri.EVENT_SUBSCRIBE, body); + return result; + } + + /** + * 海康事件接收 + */ + @PostMapping("/eventRcv") + @ResponseBody + public Object eventRcv(@RequestBody HikRecvEvent hikRecvEvent) { + //1、接收所需事件类型 + Long eventType = hikRecvEvent.getEventType(); + CaseInfo caseInfo = caseInfoFactoryUtil.getCaseInfo(eventType); + //2、不同事件不同处理,caseInfoFactoryUtil已设置好事件基础定义信息 + // 再为事件添加状态(未解决)、设备编码、设备名称、位置、区域、时间 + // TODO: 2022/7/21 异步处理事件 + // TODO: 2022/7/21 海康安装设备后,应该有设备和位置的对应关系表,可维护在设备表中,获取位置和区域信息 + // TODO: 2022/7/21 位置和区域的概念 + // TODO: 2022/7/21 kafka + JSONArray eventArray = hikRecvEvent.getEventArray(); + ArrayList caseInfos = new ArrayList<>(); + while (eventArray.stream().iterator().hasNext()) { + // TODO: 2022/7/23 设备过滤,仅将预设置的设备的事件入库,可建立一个设备与事件的表或放入配置中 + JSONObject event = (JSONObject) eventArray.stream().iterator().next(); + //ISO8601标准时间格式 + //示例:2018-08-15T 15:53:47.000+08:00 + String happenTimeISO = (String) event.get("happenTime"); + DateTime parse = DateUtil.parse(happenTimeISO); + String happenTime = DateUtil.formatDateTime(parse); + caseInfo.setHappenTime(happenTime); //发生时间 + // caseInfo.setStatus(); //事件状态 + // caseInfo.setDeviceCode(); //设备code + // caseInfo.setDevName(); //设备名 + // caseInfo.setPosition(); //事件位置 + // caseInfo.setAreaName(); //区域 + caseInfos.add(caseInfo); + } + //3、安防事件入库 + caseInfoService.addCaseInfoBatch(caseInfos); + return null; + } + + /** + * 单个添加海康人脸分组 + * api->hik单个添加人脸分组api->response->mysql + */ + @PostMapping("/faceGroup/single/add") + @ResponseBody + public Object faceGroupAddition(@RequestBody FaceGroupAdditionRequest faceGroupAdditionRequest) { + String body = JSONObject.toJSONString(faceGroupAdditionRequest); + String resultStr = HikUtil.hikApi(HikUri.FACEGROUP_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸分组失败,海康response:{}", resultStr); + return ResponseData.error("添加人脸分组失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + String code = (String) dataJson.get("indexCode"); + String name = (String) dataJson.get("name"); + String description = (String) dataJson.get("description"); + HikFaceGroupInfo hikFaceGroupInfo = new HikFaceGroupInfo(); + hikFaceGroupInfo.setFaceGroupCode(code); + hikFaceGroupInfo.setFaceGroupName(name); + hikFaceGroupInfo.setFaceGroupDesc(description); + return hikFaceGroupInfoService.addFaceGroupInfo(hikFaceGroupInfo); + } + + /** + * 批量添加海康组织 + * api->hik批量添加组织api->response + */ + @PostMapping("/org/batch/add") + @ResponseBody + public Object orgBatchAdd(@RequestBody List orgBatchAddRequest) { + String body = JSONObject.toJSONString(orgBatchAddRequest); + String resultStr = HikUtil.hikApi(HikUri.ORG_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + JSONObject dataJson = (JSONObject) resultJson.get("data"); + List successes = (List) dataJson.get("successes"); + if (orgBatchAddRequest.size() == successes.size()) { + log.info("请求海康,批量添加组织成功,海康response:{}", resultStr); + return ResponseData.success(); + } + log.error("请求海康,批量添加组织失败,海康response:{}", resultStr); + return ResponseData.error("批量添加组织失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java new file mode 100644 index 0000000..4f64e83 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/AssetInfoMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 资产管理mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface AssetInfoMapper extends BaseMapper { + + List getAssetInfoListPage(@Param("page") Page page, AssetInfoRequest assetInfoRequest); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java new file mode 100644 index 0000000..ce94b8f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/BlackInfoMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:54 + */ +@Mapper +public interface BlackInfoMapper extends BaseMapper { + + List getBlackInfoListPage(@Param("page") Page page, BlackInfoRequest blackInfoRequest); +} 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 new file mode 100644 index 0000000..aa6795d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 安防事件mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface CaseInfoMapper extends BaseMapper { + + List getCaseInfoListPage(@Param("page") Page page, 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 new file mode 100644 index 0000000..ca1cd6c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:18 + */ +@Mapper +public interface CategoryLevelMapper extends BaseMapper { + + List getCaseCategoryLevelListPage(@Param("page") Page page, CategoryLevelRequest categoryLevelRequest); + + List getCaseCategoryLevelList(CategoryLevelRequest categoryLevelRequest); + + CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + +} 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 new file mode 100644 index 0000000..49593e8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 设备mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceInfoMapper extends BaseMapper { + + List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java new file mode 100644 index 0000000..41dd0af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceRepairLogMapper.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceRepairRequest; +import com.casic.missiles.modular.model.DeviceRepairLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Description: 设备维修记录mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface DeviceRepairLogMapper extends BaseMapper { + + List getDeviceRepairListPage(Page page, DeviceRepairRequest deviceRepairRequest); + + List getDeviceRepairList(DeviceRepairRequest deviceRepairRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java new file mode 100644 index 0000000..d381a9f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/FireEquipInfoMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 消防器材mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface FireEquipInfoMapper extends BaseMapper { + + List getFireEquipInfoListPage(@Param("page") Page page, FireEquipRequest fireEquipRequest); + + FireEquipInfo getFireEquipInfo(@Param("equipCode") String equipCode); +} 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 new file mode 100644 index 0000000..b1facc8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.GateGroupDTO; +import com.casic.missiles.modular.dto.GateGroupRequest; +import com.casic.missiles.modular.model.GateGroup; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 16:15 + */ +@Mapper +public interface GateGroupMapper extends BaseMapper { + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + + GateGroup getGateGroupByName(@Param("groupName") String groupName); + + GateGroup selectByName(@Param("groupName") String groupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java new file mode 100644 index 0000000..9a9c908 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GroupDeviceMapper.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.GroupDevice; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:06 + */ +@Mapper +public interface GroupDeviceMapper extends BaseMapper { +} 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 new file mode 100644 index 0000000..c86f7b2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:06 + */ +@Mapper +public interface HazardLevelMapper extends BaseMapper { + + List getCaseHazardLevelListPage(@Param("page") Page page, HazardLevelRequest hazardLevelRequest); + + List getCaseHazardLevelList(HazardLevelRequest hazardLevelRequest); + + CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java new file mode 100644 index 0000000..0dc47d1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikCaseDefineMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:11 + */ +@Mapper +public interface HikCaseDefineMapper extends BaseMapper { + HikCaseDefine getHikCaseDefine(@Param("caseTypeCode") Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java new file mode 100644 index 0000000..ff0c0c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HikFaceGroupInfoMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:28 + */ +@Mapper +public interface HikFaceGroupInfoMapper extends BaseMapper { + HikFaceGroupInfo selectByName(@Param("faceGroupName") String faceGroupName); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java new file mode 100644 index 0000000..f8a674c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/StaffInfoMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 员工mapper + * @Author: wangpeng + * @Date: 2022/7/18 10:23 + */ +@Mapper +public interface StaffInfoMapper extends BaseMapper { + + List getStaffInfoListPage(@Param("page") Page page, StaffInfoRequest staffInfoRequest); + + StaffInfo selectByCode(@Param("staffCode") String staffCode); + + List getStaffInfoList(StaffInfoRequest staffInfoRequest); + + List selectBatchCodes(List list); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java new file mode 100644 index 0000000..1466090 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/VisitorApplyMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 访问申请mapper + * @Author: wangpeng + * @Date: 2022/7/20 10:23 + */ +@Mapper +public interface VisitorApplyMapper extends BaseMapper { + + List getVisitorApplyListPage(@Param("page") Page page, VisitorApplyRequest visitorApplyRequest); + + int updateStatusById(VisitorApplyRequest visitorApplyRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml new file mode 100644 index 0000000..8e1a9f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/AssetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..0faa3e3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..55def84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -0,0 +1,27 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..3adb601 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..57bbc47 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml new file mode 100644 index 0000000..078ed3c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceRepairLogMapper.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml new file mode 100644 index 0000000..67cdfd5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/FireEquipInfoMapper.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml new file mode 100644 index 0000000..510351c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/GateGroupMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ 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 new file mode 100644 index 0000000..403e72f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml new file mode 100644 index 0000000..e4b08ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikCaseDefineMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml new file mode 100644 index 0000000..b875746 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HikFaceGroupInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml new file mode 100644 index 0000000..2a749f6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/StaffInfoMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml new file mode 100644 index 0000000..d996517 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/VisitorApplyMapper.xml @@ -0,0 +1,30 @@ + + + + + + + update bus_case_info set status = #{status} where id = #{id} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java new file mode 100644 index 0000000..d69ba2d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/AssetInfoRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class AssetInfoRequest { + //资产编号/资产名称 (模糊查询) + private String keywords; + //资产类型(字典值) + private String assetType; + //资产状态(0:启用;1:在用) + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java new file mode 100644 index 0000000..7f43e09 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/BlackInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 黑名单列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 16:32 + */ +@Data +public class BlackInfoRequest { + private String keywords; + private String blackReason; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java new file mode 100644 index 0000000..b2ce351 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CaseInfoRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class CaseInfoRequest { + private String id; + private String level; + private String type; + private String status; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java new file mode 100644 index 0000000..843d3a0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/CategoryLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:12 + */ +@Data +public class CategoryLevelRequest { + private String code; + private String name; +} 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 new file mode 100644 index 0000000..bc9bc1e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 11:37 + */ +@Data +public class DeviceInfoRequest { + private String id; + private String devCode; + private String devName; + private String ip; + private String status; + private String isKeyArea; + private String position; +} 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 new file mode 100644 index 0000000..06517b3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:53 + */ +@Data +public class DeviceRepairLogDTO { + private String deviceCode; + private String deviceName; + private long totalRepairTime; + private int failNumber; + private long mttr; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java new file mode 100644 index 0000000..d8b1ce5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 14:49 + */ +@Data +public class DeviceRepairRequest { + private String devCode; + private String devName; + private String createTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java new file mode 100644 index 0000000..e74998c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/FireEquipRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:45 + */ +@Data +public class FireEquipRequest { + private String equipCode; + private String equipName; + private String equipType; + private String position; +} 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 new file mode 100644 index 0000000..643128e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 闸机分组列表响应实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:09 + */ +@Data +public class GateGroupDTO { + private Long id; + private String groupName; + private String description; + private String gateCodes; + private String remarks; + private String status; + private String statusName; + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java new file mode 100644 index 0000000..8f395c2 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 闸机分组列表请求实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:05 + */ +@Data +public class GateGroupRequest { + private String groupName; + private String gateCode; + private String status; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java new file mode 100644 index 0000000..aa4bb17 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/HazardLevelRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 15:55 + */ +@Data +public class HazardLevelRequest { + private String code; + private String name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java new file mode 100644 index 0000000..caa1186 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/StaffInfoRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 17:26 + */ +@Data +public class StaffInfoRequest { + private String keywords; + private String staffType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java new file mode 100644 index 0000000..7df0c16 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/VisitorApplyRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:03 + */ +@Data +public class VisitorApplyRequest { + private String keywords; + private String visitReason; + private String area; + private String startTime; + private String endTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java new file mode 100644 index 0000000..8468315 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记请求实体 + * @Author: wangpeng + * @Date: 2022/7/23 15:56 + */ +@Data +public class AppointmentFreeRegisterRequest { + //被访人唯一标识,从 获取人员列表v2 接口获取返回参数personId + private String receptionistId; + /** + * 预计来访时间,时间参数需满足ISO8601格式: + * yyyy-MM-ddTHH:mm:ss+当前时区, + * 例如北京时间: 2018-07-26T15:00:00+08:00 + */ + private String visitStartTime; + //预计离开时间 + private String visitEndTime; + //来访事由,长度为0~128个字符 + private String visitPurpose; + //来访人数,1-99 + private Number personNum; + //访客信息 + private VisitorInfo visitorInfo; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java new file mode 100644 index 0000000..97b9975 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/AppointmentFreeRegisterResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康-预约免登记响应实体 + * @Author: wangpeng + * @Date: 2022/7/23 16:07 + */ +@Data +public class AppointmentFreeRegisterResponse { + private String appointRecordId; + private String visitorName; + private String receptionistId; + private String receptionistName; + private String verificationCode; + private String orderId; + private String QRCode; + private String picUri; + private String svrIndexCode; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java new file mode 100644 index 0000000..6846aaf --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/DoorControlRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 门禁点反控请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 16:06 + */ +@Data +public class DoorControlRequest { + private List doorIndexCodes; + private Number controlType; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java new file mode 100644 index 0000000..bc662b0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventSubscribeRequest.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 请求海康事件订阅实体 + * @Author: wangpeng + * @Date: 2022/7/20 17:43 + */ +@Data +public class EventSubscribeRequest { + private List eventTypes; + private String eventDest; + private Number subType; + private List eventLvl; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java new file mode 100644 index 0000000..c4a0726 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/EventsInfo.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 接收到的海康事件中所需信息 + * @Author: wangpeng + * @Date: 2022/7/21 14:37 + */ +@Data +public class EventsInfo { + private String eventId; + private String eventType; + private String happenTime; + // TODO: 2022/7/21 事件信息根据实际需要补充 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java new file mode 100644 index 0000000..d2d602c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceDeletionBatchRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康人脸批量删除请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 15:51 + */ +@Data +public class FaceDeletionBatchRequest { + private List indexCodes; + private String faceGroupIndexCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java new file mode 100644 index 0000000..86fbc10 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceGroupAdditionRequest.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 添加单个人脸分组请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 10:55 + */ +@Data +public class FaceGroupAdditionRequest { + private String name; + private String description; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java new file mode 100644 index 0000000..f8f2fba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceInfo.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:24 + */ +@Data +public class FaceInfo { + //人脸的名称,1~32个字符; + private String name; + //人脸的性别信息, + //1-男性,2-女性,UNKNOWN-未知 + private String sex; + //人脸的证件类别,111-身份证,OTHER-其它证件 + private String certificateType; + //人脸的证件号码信。1~20个数字、字母 + private String certificateNum; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java new file mode 100644 index 0000000..2fd7c15 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FacePic.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 13:25 + */ +@Data +public class FacePic { + //人脸图片的URL + private String faceUrl; + //人脸图片的二进制数据经过Base64编码后的字符串,和faceUrl不能同时为空,同时存在时优先取faceBinaryData。 + //图片的大小范围在10KB到200KB之间,只支持JGP格式图片。 + private String faceBinaryData; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..261ddd7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/FaceSingleAddOrUpdateRequest.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 单个人脸添加请求实体 + * @Author: wangpeng + * @Date: 2022/7/25 13:23 + */ +@Data +public class FaceSingleAddOrUpdateRequest { + //人脸分组的唯一标识 + private String faceGroupIndexCode; + private FaceInfo faceInfo; + private FacePic facePic; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java new file mode 100644 index 0000000..a3e9845 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/HikRecvEvent.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.dto.hik; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Description: 海康事件接收实体 + * @Author: wangpeng + * @Date: 2022/7/21 14:04 + */ +@Data +public class HikRecvEvent { + private String method; + //事件参数信息 + //一定包含ability String 事件类别、clients String[] 组件标识、events Events[] 事件信息 + private Object params; + + /** + * 事件信息Event数组 + */ + public JSONArray getEventArray(){ + JSONObject paramJson = (JSONObject)JSONObject.toJSON(params); + JSONArray events = paramJson.getJSONArray("events"); + return events; + } + + /** + * 事件类型,用于判断所需接收到的事件类型 + */ + public Long getEventType(){ + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(params); + //事件类别对应SecurityEventTypeEnum + JSONArray eventTypeArray = (JSONArray)jsonObject.get("events"); + JSONObject eventJsonObject = (JSONObject)JSONObject.toJSON(eventTypeArray.get(0)); + Long eventType = (Long) eventJsonObject.get("eventType"); + return eventType; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java new file mode 100644 index 0000000..ee6214c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/OrgBatchAdd.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 8:55 + */ +@Data +public class OrgBatchAdd { + /** + * 调用方指定标识,接口执行成功后将服务端生成的标识与此标识绑定后返回 + * 所以建议每次接口调用,clientid保持唯一。1~10个字符,只支持数字。 + * 注释:ISC不对clientid做校验和存储 + */ + private String clientId; + /** + * 组织唯一标志,不允许与其它组织唯一标志重复,包括已删除的组织, + * 值为空或者不传此字段系统自动生成唯一标志 + */ + private String orgIndexCode; + //组织名称,1~32个字符 + private String orgName; + //父组织唯一标识码 + private String parentIndexCode; + /** + * 组织编码,当添加小区节点时必填,编码使用01101开头的8位数字编码, + * 当添加楼栋单元时必填,编码使用01101开头的20位数字编码, + * 其它场景下该值无效 + */ + private String orgCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java new file mode 100644 index 0000000..027d31d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonBatchDeleteRequest.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康删除人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 13:17 + */ +@Data +public class PersonBatchDeleteRequest { + private List personIds; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java new file mode 100644 index 0000000..52f5d31 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/PersonSingleAddOrUpdateRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +import java.util.List; + +/** + * @Description: 海康添加&修改人员请求实体 + * @Author: wangpeng + * @Date: 2022/7/27 9:33 + */ +@Data +public class PersonSingleAddOrUpdateRequest { + private String personId; + private String personName; + private String gender; + //所属组织标识 + private String orgIndexCode; + private String phoneNo; + private String certificateType; + private String certificateNo; + //工号,1-32个字符,平台上人员信息实名标识选择为工号时必填 + private String jobNo; + private List faces; + + @Data + public static class FaceData { + private String faceData; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java new file mode 100644 index 0000000..726f37e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/hik/VisitorInfo.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.dto.hik; + +import lombok.Data; + +/** + * @Description: 海康访客信息 + * @Author: wangpeng + * @Date: 2022/7/23 16:03 + */ +@Data +public class VisitorInfo { + //访客姓名,长度不超过32 + private String visitorName; + //访客性别 + //1: 男 + //2: 女 + private String gender; + //联系电话建议填写手机号码 + private String phoneNo; + //证件类型 + private Number certificateType = 111; + //证件号码 + private String certificateNo; + //其他非必填暂不添加 +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java new file mode 100644 index 0000000..564f8a3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/HikUri.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 海康接口uri枚举 + * @Author: wangpeng + * @Date: 2022/7/20 17:33 + */ +public interface HikUri { + //事件订阅 + String EVENT_SUBSCRIBE = "/api/eventService/v1/eventSubscriptionByEventTypes"; + //预约免登记 + String APPOINTMENT_FREE_REGISTER = "/api/visitor/v1/appointment/registration"; + //单个添加人脸分组 + String FACEGROUP_SINGLE_ADDITION = "/api/frs/v1/face/group/single/addition"; + //单个添加人脸 + String FACE_SINGLE_ADDITION = "/api/frs/v1/face/single/addition"; + //批量删除人脸 + String FACE_BATCH_DELETION = "/api/frs/v1/face/deletion"; + //单个修改人脸 + String FACE_SINGLE_UPDATE = "/api/frs/v1/face/single/update"; + //批量添加组织 + String ORG_BATCH_ADD = "/api/resource/v1/org/batch/add"; + //单个添加人员 + String PERSON_SINGLE_ADD = "/api/resource/v2/person/single/add"; + //批量添加人员 + String PERSON_BATCH_ADD = "/api/resource/v2/person/batch/add"; + //单个修改人员 + String PERSON_SINGLE_UPDATE = "/api/resource/v1/person/single/update"; + //批量删除人员 + String PERSON_BATCH_DELETE = "/api/resource/v1/person/batch/delete"; + //门禁点反控 + String DOOR_CONTROL = "/api/acs/v1/door/doControl"; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java new file mode 100644 index 0000000..f1711af --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/OperateTypeEnum.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 增删改枚举类 + * @Author: wangpeng + * @Date: 2022/7/18 14:40 + */ +public enum OperateTypeEnum { + ADD("add"), + UPDATE("update"), + DELETE("delete"), + BATCHDELETE("batchDelete"); + + private String operateType; + + OperateTypeEnum(String operateType) { + this.operateType = operateType; + } + + public String getOperateType(){ + return this.operateType; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java new file mode 100644 index 0000000..228ef68 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/enums/SecurityEventType.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.enums; + +/** + * @Description: 安防事件类型 + * @Author: wangpeng + * @Date: 2022/7/19 11:04 + */ +public interface SecurityEventType { + // TODO: 2022/7/23 将该枚举类放入数据表中维护海康事件定义 + //重点人员识别事件 + Number KEY_PERSONNEL_IDENTIFY_EVENT = 1644175361; + //离岗事件 + Number PERSONNEL_DEMOBILIZED_EVENT = 131603; + //人员聚集事件 + Number PERSONNEL_GATHER_EVENT = 131593; + //监控点离线事件 + Number MONITORING_POINT_OFFLINE = 889196545; + //装置离线 + Number DEVICE_OFFLINE = 199710; + +// //人脸抓拍事件 +// Number FACE_CAPTURE_EVENT = 131614; +// //人脸比对事件 +// Number FACE_COMPARE_EVENT = 131659; +// //视频遮挡 +// Number VIDEO_OCCLUSION = 131330; +// //尾随 +// Number FOLLOW = 131604; +// //徘徊侦测 +// Number WANDER_DETECTION = 131590; +// //烟火检测 +// Number FIREWORKS_DETECTION = 192514; +// //陌生人识别事件 +// Number STRANGER_RECOGNITION = 1644171265; +// //高空抛物 +// Number HIGH_ALTITUDE_PARABOLIC = 930335; + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..1b9020e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.handler; + +import com.casic.missiles.model.response.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @Description: 全局异常处理 + * @Author: wangpeng + * @Date: 2022/7/18 14:00 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + @ResponseBody + @ExceptionHandler(value = DataAccessException.class) + public Object allBusinessExceptionHandler(DataAccessException exception) { + log.error("操作数据库失败,exception:{}", exception.getMessage()); + return ResponseData.error("数据库异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java new file mode 100644 index 0000000..7745e44 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/AssetInfo.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * @Description: 资产表实体类 + * @Author: wangpeng + * @Date: 2022/7/22 10:58 + */ +@Data +@TableName("bus_asset_info") +public class AssetInfo { + @TableId + private Long id; + private String assetName; + private String assetType; + @TableField(exist = false) + private String assetTypeName; + private String assetCode; + private String position; + private String status; + private String brand; + private String sn; + private String picture; + private String remark; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java new file mode 100644 index 0000000..7b7315a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/BlackInfo.java @@ -0,0 +1,38 @@ +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; + +import java.util.List; + +/** + * @Description: 黑名单实体类 + * @Author: wangpeng + * @Date: 2022/7/25 11:47 + */ +@Data +@TableName("bus_blacklist_info") +public class BlackInfo { + @TableId + private Long id; + //海康人脸唯一标识 + private String indexCode; + //海康人脸分组唯一标识 + private String faceGroupIndexCode; + private String idCardNo; + private String blackName; + private String blackSex; + private String picture; + private String blackReason; + @TableField(exist = false) + private String blackReasonName; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + @TableField(exist = false) + private List indexCodes; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java new file mode 100644 index 0000000..1b5e9c8 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseCategoryLevel.java @@ -0,0 +1,32 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安防事件类别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:19 + */ +@Data +@TableName("bus_case_category_level") +public class CaseCategoryLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java new file mode 100644 index 0000000..8420978 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseHazardLevel.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 事件危险级别实体类 + * @Author: wangpeng + * @Date: 2022/7/18 11:11 + */ +@Data +@TableName("bus_case_hazard_level") +public class CaseHazardLevel extends Model { + @TableId + private Long id; + private String code; + private String name; + private String description; + private String weight; + private String remarks; + private String createTime; + private String updateTime; + @TableField(exist = false) + 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 new file mode 100644 index 0000000..d2628fc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -0,0 +1,69 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 安防事件实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_case_info") +public class CaseInfo extends Model { + @TableId + private Long id; + @ExcelProperty("危险级别编码") + private String hazardLevelCode; + @ExcelProperty("危险级别") + private String levelName; + @ExcelProperty("事件描述") + private String description; + @ExcelProperty("事件状态") + private String status; + @TableField(exist = false) + private String statusName; + @ExcelProperty("事件类别编码") + private String categoryLevelCode; + @ExcelProperty("事件类别") + private String typeName; + @ExcelProperty("设备编码") + private String deviceCode; + @ExcelProperty("设备名称") + private String devName; + //4个楼,字典值 + @ExcelProperty("所属楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + @ExcelProperty("发生时间") + private String happenTime; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..a04c350 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 设备实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_device_info") +public class DeviceInfo extends Model { + @TableId + private Long id; + @ExcelProperty("设备名称") + private String devName; + @ExcelProperty("设备编号") + private String devCode; + @ExcelProperty("设备类型") + private String devType; + //4个楼,字典值 + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + //楼层划分,字典值 + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("设备状态") + private String status; + @ExcelProperty("安装时间") + private String installTime; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("设备IP") + private String ip; + @ExcelProperty("设备SN") + private String sn; + @ExcelProperty("是否重点区域") + private String isKeyArea; + @TableField(exist = false) + private String isKeyAreaName; + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..632ed07 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Description: 设备维修记录表 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ + +@Data +@TableName("bus_device_repair_log") +public class DeviceRepairLog extends Model { + @TableId + private Long id; + private String deviceCode; + private String deviceName; + private String repairCode; + private String repairStartTime; + private String repairEndTime; + private String submitter; + private String repairInstruction; + private String remarks; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..58257ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 消防器材实体类 + * @Author: wangpeng + * @Date: 2022/7/27 14:15 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_fire_equip_info") +public class FireEquipInfo { + @TableId + private Long id; + @ExcelProperty("器材编号") + private String equipCode; + @ExcelProperty("器材名称") + private String equipName; + @ExcelProperty("器材分类") + private String equipType; + @TableField(exist = false) + private String equipTypeName; + @ExcelProperty("所在楼栋") + private String position; + @TableField(exist = false) + private String positionName; + @ExcelProperty("区域") + private String area; + @TableField(exist = false) + private String areaName; + @ExcelProperty("详细位置") + private String detailLocation; + @ExcelProperty("灭火级别") + private String fireLevel; + @TableField(exist = false) + private String fireLevelName; + @ExcelProperty("重量") + private String equipWeight; + @ExcelProperty("生产日期") + private String productDate; + @ExcelProperty("保质期") + private String qualityDate; + @ExcelProperty("截止有效期") + private String expireDate; + @ExcelProperty("备注") + private String remarks; + private String createTime; + private String updateTime; + + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java new file mode 100644 index 0000000..c5e2c1a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GateGroup.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 闸机分组实体 + * @Author: wangpeng + * @Date: 2022/7/26 15:02 + */ +@Data +@TableName("bus_gate_group") +public class GateGroup { + private Long id; + private String groupName; + private String description; + private String remarks; + private String status; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java new file mode 100644 index 0000000..cafb900 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/GroupDevice.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:01 + */ +@Data +@TableName("bus_group_device") +public class GroupDevice { + private Long id; + private Long gateGroupId; + private String deviceCode; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java new file mode 100644 index 0000000..f6b525a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikCaseDefine.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康事件定义表实体 + * @Author: wangpeng + * @Date: 2022/7/21 17:09 + */ +@Data +@TableName("bus_hik_case_define") +public class HikCaseDefine { + @TableId + private Long id; + private Long caseTypeCode; + private String hazardLevelCode; + private String description; + private String categoryLevelCode; + private String deviceCode; + private String devName; + private String createTime; + private String updateTime; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java new file mode 100644 index 0000000..067ea2a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/HikFaceGroupInfo.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 海康人脸分组信息表实体 + * @Author: wangpeng + * @Date: 2022/7/25 11:10 + */ +@Data +@TableName("bus_hik_face_group_info") +public class HikFaceGroupInfo { + @TableId + private Long id; + private String faceGroupCode; + private String faceGroupName; + private String faceGroupDesc; + private String createTime; + private String updateTime; +} 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 new file mode 100644 index 0000000..0c5e2d0 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -0,0 +1,57 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 员工实体类 + * @Author: wangpeng + * @Date: 2022/7/18 10:24 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_staff_info") +public class StaffInfo extends Model { + @TableId + private Long id; + @ExcelProperty("员工编号") + private String staffCode; + @ExcelProperty("姓名") + private String staffName; + @ExcelProperty("性别") + private String staffGender; + @ExcelProperty("身份证号") + private String staffIdCard; + @ExcelProperty("员工类型") + private String staffType; + @TableField(exist = false) + private String staffTypeName; + @ExcelProperty("手机号") + private String phone; + @ExcelProperty("照片") + private String picture; + @ExcelProperty("工作开始日期") + private String onDate; + @ExcelProperty("工作结束日期") + private String offDate; + private String createTime; + private String updateTime; + @TableField(exist = false) + private List ids; +} 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 new file mode 100644 index 0000000..43b1ea4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -0,0 +1,72 @@ +package com.casic.missiles.modular.model; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 访客申请实体类 + * @Author: wangpeng + * @Date: 2022/7/20 14:35 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@Data +@TableName("bus_visit_apply") +public class VisitorApply { + @TableId + private Long id; + @ExcelProperty("访客姓名") + private String visitorName; + @ExcelProperty("访客性别") + private String visitorGender; + @ExcelProperty("访客身份证") + private String idCard; + @ExcelProperty("访客联系方式") + private String visitorPhone; + @ExcelProperty("访问目的") + private String visitReason; + @ExcelProperty("访问区域") + private String visitArea; + @ExcelProperty("备注") + private String remarks; + @ExcelProperty("状态") + private String status; + @ExcelProperty("被访人工号") + private String staffCode; + @ExcelProperty("被访人姓名") + private String staffName; + @ExcelProperty("被访人联系方式") + private String staffPhone; + @ExcelProperty("访问开始时间") + private String inTime; + @ExcelProperty("访问结束时间") + private String outTime; + //海康预约记录id + private String appointRecordId; + //海康被访人唯一标识 + private String receptionistId; + //访客记录唯一标识,用于已预约登记、访客签离等操作 + private String OrderId; + //访客头像,返回图片的相对Uri + private String picUri; + + private String createTime; + private String updateTime; + + @TableField(exist = false) + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java new file mode 100644 index 0000000..2af6009 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/AssetInfoService.java @@ -0,0 +1,27 @@ +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.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; + +import java.util.List; + +/** + * @Description: 资产管理service + * @Author: wangpeng + * @Date: 2022/7/22 10:19 + */ +public interface AssetInfoService extends IService { + List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest); + + int addAssetInfo(AssetInfo assetInfo); + + int updateAssetInfo(AssetInfo assetInfo); + + int deleteAssetInfol(AssetInfo assetInfo); + + int deleteBatchAssetInfo(List ids); + + List addAssetInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java new file mode 100644 index 0000000..d94c696 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/BlackInfoService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.model.BlackInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface BlackInfoService { + Object addBlackInfo(BlackInfo blackInfo); + + Object deleteBlackInfo(BlackInfo blackInfo); + + Object updateBlackInfo(BlackInfo blackInfo); + + Object deleteBatchBlackInfo(BlackInfo blackInfo); + + List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java new file mode 100644 index 0000000..55a1d4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CaseInfoService.java @@ -0,0 +1,21 @@ +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.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; + +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:19 + */ +public interface CaseInfoService extends IService { + List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest); + + int updateStatus(CaseInfoRequest caseInfoRequest); + + List addCaseInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java new file mode 100644 index 0000000..a0a32fb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/CategoryLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; + +import java.util.List; + +/** + * @Description: 安防事件类别Service + * @Author: wangpeng + * @Date: 2022/7/18 14:14 + */ +public interface CategoryLevelService { + List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest); + + List categoryLevelList(CategoryLevelRequest categoryLevelRequest); + + Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel); + + Object deleteBatchCategoryLevel(List ids); +} 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 new file mode 100644 index 0000000..f345ff3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -0,0 +1,48 @@ +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.*; +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; + +/** + * @Description: 设备service + * @Author: wangpeng + * @Date: 2022/7/19 12:34 + */ +public interface DeviceInfoService extends IService { + + List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + + Object addDeviceInfo(DeviceInfo deviceInfo); + + Object updateDeviceInfo(DeviceInfo deviceInfo); + + Object deleteDeviceInfo(DeviceInfo deviceInfo); + + Object deleteBatchDeviceInfo(List ids); + + List addDeviceInfoBatch(List results); + + List deviceRepairListPage(/*Page page, */DeviceRepairRequest deviceRepairRequest); + + int addDevicePairLog(DeviceRepairLog deviceRepairLog); + + int deleteDevicePairLog(DeviceRepairLog deviceRepairLog); + + DeviceRepairLog selectById(Long id); + + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + + Object addGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object updateGateGroupDTO(GateGroupDTO gateGroupDTO); + + Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); + + List selectDeviceCodesByIds(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java new file mode 100644 index 0000000..111d778 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/FireEquipService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.FireEquipInfo; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +public interface FireEquipService { + List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest); + + Object addFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object updateFireEquipInfo(FireEquipInfo fireEquipInfo); + + Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo); + + List addFireEquipInfoBatch(List results); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java new file mode 100644 index 0000000..155811a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/GroupDeviceService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.GroupDevice; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:10 + */ +public interface GroupDeviceService extends IService { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java new file mode 100644 index 0000000..b6ef1ed --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HazardLevelService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; + +import java.util.List; + +/** + * @Description: 安防事件危险级别Service + * @Author: wangpeng + * @Date: 2022/7/18 15:58 + */ +public interface HazardLevelService { + List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest); + + List hazardLevelList(HazardLevelRequest hazardLevelRequest); + + Object addHazardLevel(CaseHazardLevel caseHazardLevel); + + Object updateHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteHazardLevel(CaseHazardLevel caseHazardLevel); + + Object deleteBatchHazardLevel(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java new file mode 100644 index 0000000..d9bb3a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikCaseDefineService.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.model.HikCaseDefine; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:20 + */ +public interface HikCaseDefineService extends IService { + HikCaseDefine getHikCaseDefine(Long caseTypeCode); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java new file mode 100644 index 0000000..d6f1c8d --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/HikFaceGroupInfoService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.service; + +import com.casic.missiles.modular.model.HikFaceGroupInfo; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:20 + */ +public interface HikFaceGroupInfoService { + Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java new file mode 100644 index 0000000..e55c016 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/StaffInfoService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.model.StaffInfo; + +import java.util.List; + +/** + * @Description: 员工service + * @Author: wangpeng + * @Date: 2022/7/19 18:37 + */ +public interface StaffInfoService { + + List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest); + + Object addStaffInfo(StaffInfo staffInfo); + + Object updateStaffInfo(StaffInfo staffInfo); + + Object deleteStaffInfo(StaffInfo staffInfo); + + Object deleteBatchStaffInfo(List ids); + + List addStaffInfoBatch(List results); + + StaffInfo selectStaffInfoByCode(StaffInfo staffInfo); + + List staffInfoList(StaffInfoRequest staffInfoRequest); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java new file mode 100644 index 0000000..f9523a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitorApplyService.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.model.VisitorApply; + +import java.util.List; + +/** + * @Description: 访问申请service + * @Author: wangpeng + * @Date: 2022/7/20 14:59 + */ +public interface VisitorApplyService { + List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest); + + List addVisitorApplyBatch(List results); + + int addVisitorApply(VisitorApply visitorApply); + + int updateVisitorApply(VisitorApply visitorApply); + + int deleteVisitorApply(VisitorApply visitorApply); + + int deleteBatchVisitorApply(List ids); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java new file mode 100644 index 0000000..28d66d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/AssetInfoServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.AssetInfoMapper; +import com.casic.missiles.modular.dto.AssetInfoRequest; +import com.casic.missiles.modular.model.AssetInfo; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.AssetInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/22 11:26 + */ +@Service +@Slf4j +public class AssetInfoServiceImpl extends ServiceImpl implements AssetInfoService { + @Autowired + private AssetInfoMapper assetInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List assetInfoListPage(Page page, AssetInfoRequest assetInfoRequest) { + try { + List pageList = assetInfoMapper.getAssetInfoListPage(page, assetInfoRequest); + pageList.forEach(assetInfo ->{ + assetInfo.setAssetTypeName(dictService.getDictNameByCode("assetType", assetInfo.getAssetType())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("资产管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int addAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.insert(assetInfo); + } + + @Override + public int updateAssetInfo(AssetInfo assetInfo) { + return assetInfoMapper.updateById(assetInfo); + } + + @Override + public int deleteAssetInfol(AssetInfo assetInfo) { + return assetInfoMapper.deleteById(assetInfo.getId()); + } + + @Override + public int deleteBatchAssetInfo(List ids) { + return assetInfoMapper.deleteBatchIds(ids); + } + + @Override + public List addAssetInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "资产导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (CollectionUtil.isNotEmpty(list)) { + return list; + } + // TODO: 2022/7/22 先批量查询,将查询到的数据返回message中,未查询到的进行插入 + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java new file mode 100644 index 0000000..1b8ac75 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/BlackInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.casic.missiles.modular.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.BlackInfoMapper; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.dto.BlackInfoRequest; +import com.casic.missiles.modular.dto.hik.FaceDeletionBatchRequest; +import com.casic.missiles.modular.dto.hik.FaceInfo; +import com.casic.missiles.modular.dto.hik.FacePic; +import com.casic.missiles.modular.dto.hik.FaceSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.BlackInfo; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.BlackInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class BlackInfoServiceImpl extends ServiceImpl implements BlackInfoService { + @Autowired + private BlackInfoMapper blackInfoMapper; + + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Resource + private ICasicFileService fileService; + + @Resource + private AbstractDictService dictService; + + @Override + public List blackInfoListPage(Page page, BlackInfoRequest blackInfoRequest) { + try { + List pageList = blackInfoMapper.getBlackInfoListPage(page, blackInfoRequest); + pageList.forEach(blackInfo ->{ + blackInfo.setBlackReasonName(dictService.getDictNameByCode("blackReason", blackInfo.getBlackReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("黑名单: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addBlackInfo(BlackInfo blackInfo) { + //添加黑名单到海康黑名单人脸分组 + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + //获取本地人脸分组信息 + HikFaceGroupInfo faceGroupInfo = hikFaceGroupInfoMapper.selectByName("blackList"); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(faceGroupInfo.getFaceGroupCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_ADDITION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人脸失败"); + } + JSONObject dataJson = (JSONObject)resultJson.get("data"); + //设置海康人脸唯一标识、人脸分组唯一标识 + blackInfo.setIndexCode((String) dataJson.get("indexCode")); + blackInfo.setFaceGroupIndexCode((String) dataJson.get("faceGroupIndexCode")); + //保存图片到本地 + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + //插入数据库 + if(blackInfoMapper.insert(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个添加到黑名单异常"); + } + + @Override + public Object deleteBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + ArrayList indexCodes = new ArrayList<>(); + indexCodes.add(blackInfo.getIndexCode()); + faceDeletionBatchRequest.setIndexCodes(indexCodes); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人脸失败"); + } + if(blackInfoMapper.deleteById(blackInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个删除黑名单异常"); + } + + @Override + public Object updateBlackInfo(BlackInfo blackInfo) { + FaceSingleAddOrUpdateRequest faceSingleAddOrUpdateRequest = new FaceSingleAddOrUpdateRequest(); + faceSingleAddOrUpdateRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + FaceInfo faceInfo = new FaceInfo(); + faceInfo.setName(blackInfo.getBlackName()); + faceInfo.setSex(blackInfo.getBlackSex()); + faceInfo.setCertificateType("111"); + faceInfo.setCertificateNum(blackInfo.getIdCardNo()); + faceSingleAddOrUpdateRequest.setFaceInfo(faceInfo); + FacePic facePic = new FacePic(); + facePic.setFaceBinaryData(blackInfo.getPicture()); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + faceSingleAddOrUpdateRequest.setFacePic(facePic); + String body = JSONObject.toJSONString(faceSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,单个修改人脸失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人脸失败"); + } + String picUrl = fileService.saveFile(blackInfo.getPicture()); + blackInfo.setPicture(picUrl); + if(blackInfoMapper.updateById(blackInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("单个修改黑名单异常"); + } + + @Override + public Object deleteBatchBlackInfo(BlackInfo blackInfo) { + FaceDeletionBatchRequest faceDeletionBatchRequest = new FaceDeletionBatchRequest(); + faceDeletionBatchRequest.setIndexCodes(blackInfo.getIndexCodes()); + faceDeletionBatchRequest.setFaceGroupIndexCode(blackInfo.getFaceGroupIndexCode()); + String body = JSONObject.toJSONString(faceDeletionBatchRequest); + String resultStr = HikUtil.hikApi(HikUri.FACE_BATCH_DELETION, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code")) || !(Boolean)resultJson.get("data")) { + log.error("请求海康,批量删除人脸失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人脸失败"); + } + if(blackInfoMapper.deleteBatchIds(blackInfo.getIds()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("批量删除黑名单异常"); + } +} 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 new file mode 100644 index 0000000..d1057e5 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.dto.CaseInfoRequest; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.service.CaseInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 安防事件service + * @Author: wangpeng + * @Date: 2022/7/18 10:20 + */ +@Service +@Slf4j +public class CaseInfoServiceImpl extends ServiceImpl implements CaseInfoService { + @Autowired + private CaseInfoMapper caseInfoMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Override + public List caseInfoListPage(Page page, CaseInfoRequest caseInfoRequest) { + try { + List pageList = caseInfoMapper.getCaseInfoListPage(page, caseInfoRequest); + pageList.forEach(caseInfo ->{ + caseInfo.setStatusName(dictService.getDictNameByCode("caseStatus", caseInfo.getStatus())); + caseInfo.setPositionName(dictService.getDictNameByCode("devicePosition", caseInfo.getPosition())); + caseInfo.setAreaName(dictService.getDictNameByCode("deviceArea", caseInfo.getArea())); + caseInfo.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", caseInfo.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public int updateStatus(CaseInfoRequest caseInfoRequest) { + return caseInfoMapper.updateStatusById(caseInfoRequest); + } + + @Override + public List addCaseInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getHappenTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setHappenTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} 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 new file mode 100644 index 0000000..be006ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -0,0 +1,85 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dto.CategoryLevelRequest; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.service.CategoryLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 14:16 + */ +@Slf4j +@Service +public class CategoryLevelServiceImpl implements CategoryLevelService { + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Override + public List categoryLevelListPage(Page page, CategoryLevelRequest categoryLevelRequest) { + try { + List pageList = categoryLevelMapper.getCaseCategoryLevelListPage(page, categoryLevelRequest); + return pageList; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询分页出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public List categoryLevelList(CategoryLevelRequest categoryLevelRequest) { + try { + List list = categoryLevelMapper.getCaseCategoryLevelList(categoryLevelRequest); + return list; + } catch (DataAccessException ex) { + log.error("安防事件类别: 查询出现异常, code:{}, 异常:{}", categoryLevelRequest.getCode(), ex); + } + return null; + } + + @Override + public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); + if(!Objects.isNull(categoryLevel)){ + return ResponseData.error("数据已存在"); + } + if(categoryLevelMapper.insert(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件类别异常"); + } + + @Override + public Object updateCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.updateById(caseCategoryLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件类别异常"); + } + + @Override + public Object deleteCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + if(categoryLevelMapper.deleteById(caseCategoryLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件类别异常"); + } + + @Override + public Object deleteBatchCategoryLevel(List ids) { + if(categoryLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + 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 new file mode 100644 index 0000000..849e4f1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -0,0 +1,304 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.DeviceInfoMapper; +import com.casic.missiles.modular.dao.DeviceRepairLogMapper; +import com.casic.missiles.modular.dao.GateGroupMapper; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +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 com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.DeviceInfoService; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @Description: 设备Service + * @Author: wangpeng + * @Date: 2022/7/19 12:37 + */ +@Slf4j +@Service +public class DeviceInfoServiceImpl extends ServiceImpl implements DeviceInfoService { + @Autowired + private DeviceInfoMapper deviceInfoMapper; + + @Autowired + private DeviceRepairLogMapper deviceRepairLogMapper; + + @Resource + private Validator validator; + + @Resource + private AbstractDictService dictService; + + @Autowired + private GateGroupMapper gateGroupMapper; + + @Autowired + private GroupDeviceMapper groupDeviceMapper; + + @Autowired + private GroupDeviceService groupDeviceService; + + @Override + public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + try { + List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); + pageList.forEach(device ->{ + device.setDevType(dictService.getDictNameByCode("deviceType", device.getDevType())); + device.setStatus(dictService.getDictNameByCode("deviceStatus", device.getStatus())); + device.setPositionName(dictService.getDictNameByCode("devicePosition", device.getPosition())); + device.setAreaName(dictService.getDictNameByCode("deviceArea", device.getArea())); + device.setIsKeyAreaName(dictService.getDictNameByCode("IsKeyArea", device.getIsKeyArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("设备: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addDeviceInfo(DeviceInfo deviceInfo) { + DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); + if(!Objects.isNull(device)){ + return ResponseData.error("数据已存在"); + } + if(deviceInfoMapper.insert(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增设备异常"); + } + + @Override + public Object updateDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.updateById(deviceInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新设备异常"); + } + + @Override + public Object deleteDeviceInfo(DeviceInfo deviceInfo) { + if(deviceInfoMapper.deleteById(deviceInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public Object deleteBatchDeviceInfo(List ids) { + if(deviceInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除设备异常"); + } + + @Override + public List addDeviceInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "设备导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + 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 (StrUtil.isNotEmpty(busConcentrator.getInstallTime())) { + try { + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(busConcentrator.getInstallTime()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + busConcentrator.setInstallTime(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } + + @Override + public List deviceRepairListPage(/*Page page,*/ DeviceRepairRequest deviceRepairRequest) { + List deviceRepairLog = deviceRepairLogMapper.getDeviceRepairList(deviceRepairRequest); + List list = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算总维修时间、故障次数、MTTR + Map> map = deviceRepairLog.stream().collect(Collectors.groupingBy(DeviceRepairLog::getDeviceCode)); + map.forEach((k, v) -> { + long repairTime = 0; + for (DeviceRepairLog repairLog : v) { + try { + long diffTime = df.parse(repairLog.getRepairEndTime()).getTime() - df.parse(repairLog.getRepairStartTime()).getTime(); + repairTime = repairTime + diffTime; + } catch (ParseException e) { + log.error("设备维修记录:维修开始/结束日期转换异常,异常信息:{}", e.getMessage()); +// e.printStackTrace(); + } + } + DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); + deviceRepairLogDTO.setDeviceCode(k); + deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); + deviceRepairLogDTO.setFailNumber(v.size()); + deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); + deviceRepairLogDTO.setCreateTime(v.get(0).getCreateTime()); + list.add(deviceRepairLogDTO); + }); + return list; + } + + @Override + public int addDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.insert(deviceRepairLog); + } + + @Override + public int deleteDevicePairLog(DeviceRepairLog deviceRepairLog) { + return deviceRepairLogMapper.deleteById(deviceRepairLog.getId()); + } + + @Override + public DeviceRepairLog selectById(Long id) { + return deviceRepairLogMapper.selectById(id); + } + + @Override + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + try { + List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); + pageList.forEach(gateGroup ->{ + gateGroup.setStatusName(dictService.getDictNameByCode("groupDeviceStatus", gateGroup.getStatus())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("闸机通道管理: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + @Transactional + public Object addGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroupDb = gateGroupMapper.getGateGroupByName(gateGroupDTO.getGroupName()); + if(!Objects.isNull(gateGroupDb)){ + return ResponseData.error("数据已存在"); + } + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条插入 + int i = gateGroupMapper.insert(gateGroup); + GateGroup gateGroup1 = gateGroupMapper.selectByName(gateGroup.getGroupName()); + //关联表,批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroup1.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean j = groupDeviceService.saveBatch(list); + if(i > 0 && j){ + return ResponseData.success(); + } + return ResponseData.error("新增闸机通道分组异常"); + } + + @Override + @Transactional + public Object updateGateGroupDTO(GateGroupDTO gateGroupDTO) { + GateGroup gateGroup = new GateGroup(); + BeanUtils.copyProperties(gateGroupDTO, gateGroup); + //分组表,单条更新 + int i = gateGroupMapper.updateById(gateGroup); + //关联表,批量删除 + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + //关联表,再批量插入 + List list = new ArrayList<>(); + String[] codeArray = gateGroupDTO.getGateCodes().split(","); + Arrays.asList(codeArray).forEach(code -> { + GroupDevice groupDevice = new GroupDevice(); + groupDevice.setGateGroupId(gateGroupDTO.getId()); + groupDevice.setDeviceCode(code); + list.add(groupDevice); + }); + boolean k = groupDeviceService.saveBatch(list); + + if(i > 0 && j > 0 && k){ + return ResponseData.success(); + } + return ResponseData.error("更新闸机通道分组异常"); + } + + @Override + public Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO) { + int i = gateGroupMapper.deleteById(gateGroupDTO.getId()); + Map columnMap = new HashMap<>(); + columnMap.put("gate_group_id", gateGroupDTO.getId()); + int j = groupDeviceMapper.deleteByMap(columnMap); + if(i > 0 && j > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除闸机通道分组异常"); + } + + @Override + public List selectDeviceCodesByIds(List ids) { + //关联表查询 + List groupDevices = groupDeviceMapper.selectBatchIds(ids); + List collect = groupDevices.stream().distinct().collect(Collectors.toList()); + List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); + return deviceCodes; + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java new file mode 100644 index 0000000..8a5f370 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/FireEquipServiceImpl.java @@ -0,0 +1,150 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.FireEquipInfoMapper; +import com.casic.missiles.modular.dto.FireEquipRequest; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.FireEquipInfo; +import com.casic.missiles.modular.service.FireEquipService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/27 14:49 + */ +@Slf4j +@Service +public class FireEquipServiceImpl extends ServiceImpl implements FireEquipService { + @Autowired + private FireEquipInfoMapper fireEquipInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Override + public List fireEquipInfoListPage(Page page, FireEquipRequest fireEquipRequest) { + try { + List pageList = fireEquipInfoMapper.getFireEquipInfoListPage(page, fireEquipRequest); + pageList.forEach(equipInfo ->{ + equipInfo.setEquipTypeName(dictService.getDictNameByCode("equipType", equipInfo.getEquipType())); + equipInfo.setFireLevelName(dictService.getDictNameByCode("fireLevel", equipInfo.getFireLevel())); + equipInfo.setPositionName(dictService.getDictNameByCode("devicePosition", equipInfo.getPosition())); + equipInfo.setAreaName(dictService.getDictNameByCode("deviceArea", equipInfo.getArea())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("消防器材: 查询分页出现异常, 异常:{}", ex); + } + return null; + } + + @Override + public Object addFireEquipInfo(FireEquipInfo fireEquipInfo) { + FireEquipInfo equipInfo = fireEquipInfoMapper.getFireEquipInfo(fireEquipInfo.getEquipCode()); + if(!Objects.isNull(equipInfo)){ + return ResponseData.error("数据已存在"); + } + if(fireEquipInfoMapper.insert(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增消防器材异常"); + } + + @Override + public Object updateFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.updateById(fireEquipInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新消防器材异常"); + } + + @Override + public Object deleteFireEquipInfo(FireEquipInfo fireEquipInfo) { + if(fireEquipInfoMapper.deleteById(fireEquipInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除消防器材异常"); + } + + @Override + public List addFireEquipInfoBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "消防器材导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + if (StrUtil.isNotEmpty(busConcentrator.getProductDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getProductDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getExpireDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getExpireDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setExpireDate(dateFormat.format(new Date())); + } + if (StrUtil.isNotEmpty(busConcentrator.getQualityDate())) { + try { + new SimpleDateFormat("yyyy-MM-dd").parse(busConcentrator.getQualityDate()); + } catch (Exception e) { + list.add(" 第" + index[0] + "行,时间格式不正确"); + return; + } + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + busConcentrator.setProductDate(dateFormat.format(new Date())); + } + }); + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + this.saveBatch(results); + } + return list; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java new file mode 100644 index 0000000..8a43a8b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/GroupDeviceServiceImpl.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.GroupDeviceMapper; +import com.casic.missiles.modular.model.GroupDevice; +import com.casic.missiles.modular.service.GroupDeviceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/26 17:13 + */ +@Slf4j +@Service +public class GroupDeviceServiceImpl extends ServiceImpl implements GroupDeviceService { +} 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 new file mode 100644 index 0000000..40e9dae --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dto.HazardLevelRequest; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.service.HazardLevelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/18 16:00 + */ +@Slf4j +@Service +public class HazardLevelServiceImpl implements HazardLevelService { + @Autowired + private HazardLevelMapper hazardLevelMapper; + + + @Override + public List hazardLevelListPage(Page page, HazardLevelRequest hazardLevelRequest) { + List pageList = hazardLevelMapper.getCaseHazardLevelListPage(page, hazardLevelRequest); + return pageList; + } + + @Override + public List hazardLevelList(HazardLevelRequest hazardLevelRequest) { + List list = hazardLevelMapper.getCaseHazardLevelList(hazardLevelRequest); + return list; + } + + @Override + public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); + if(!Objects.isNull(hazardLevel)){ + return ResponseData.error("数据已存在"); + } + if(hazardLevelMapper.insert(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增事件危险级别异常"); + } + + @Override + public Object updateHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.updateById(caseHazardLevel) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新事件危险级别异常"); + } + + @Override + public Object deleteHazardLevel(CaseHazardLevel caseHazardLevel) { + if(hazardLevelMapper.deleteById(caseHazardLevel.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } + + @Override + public Object deleteBatchHazardLevel(List ids) { + if(hazardLevelMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除事件危险级别异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java new file mode 100644 index 0000000..98ab2a4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikCaseDefineServiceImpl.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.HikCaseDefine; +import com.casic.missiles.modular.service.HikCaseDefineService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/21 17:21 + */ +public class HikCaseDefineServiceImpl extends ServiceImpl implements HikCaseDefineService { + @Autowired + private HikCaseDefineMapper hikCaseDefineMapper; + + @Override + public HikCaseDefine getHikCaseDefine(Long caseTypeCode) { + return hikCaseDefineMapper.getHikCaseDefine(caseTypeCode); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java new file mode 100644 index 0000000..ef228f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HikFaceGroupInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.HikFaceGroupInfoMapper; +import com.casic.missiles.modular.model.HikFaceGroupInfo; +import com.casic.missiles.modular.service.HikFaceGroupInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/25 11:21 + */ +@Slf4j +@Service +public class HikFaceGroupInfoServiceImpl extends ServiceImpl implements HikFaceGroupInfoService { + @Autowired + private HikFaceGroupInfoMapper hikFaceGroupInfoMapper; + + @Override + public Object addFaceGroupInfo(HikFaceGroupInfo hikFaceGroupInfo) { + if(hikFaceGroupInfoMapper.insert(hikFaceGroupInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("添加人脸分组异常"); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java new file mode 100644 index 0000000..207b95c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/StaffInfoServiceImpl.java @@ -0,0 +1,265 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.dao.StaffInfoMapper; +import com.casic.missiles.modular.dto.StaffInfoRequest; +import com.casic.missiles.modular.dto.hik.PersonBatchDeleteRequest; +import com.casic.missiles.modular.dto.hik.PersonSingleAddOrUpdateRequest; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.DeviceInfo; +import com.casic.missiles.modular.model.StaffInfo; +import com.casic.missiles.modular.service.StaffInfoService; +import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.util.Base64Util; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/19 18:38 + */ +@Slf4j +@Service +public class StaffInfoServiceImpl extends ServiceImpl implements StaffInfoService { + @Autowired + private StaffInfoMapper staffInfoMapper; + + @Resource + private AbstractDictService dictService; + + @Resource + private Validator validator; + + @Resource + private ICasicFileService fileService; + + @Value("${casic.file.uploadPath}") + private String uploadPath; + + @Override + public List staffInfoListPage(Page page, StaffInfoRequest staffInfoRequest) { + try { + List pageList = staffInfoMapper.getStaffInfoListPage(page, staffInfoRequest); + pageList.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + String base64 = Base64Util.transformPictureToBase64(uploadPath + staffInfo.getPicture()); + staffInfo.setPicture(base64); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("员工: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object addStaffInfo(StaffInfo staffInfo) { + StaffInfo staff = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + if(!Objects.isNull(staff)){ + return ResponseData.error("数据已存在"); + } + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //添加人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_ADD, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个添加人员失败,海康response:{}", resultStr); + return ResponseData.error("单个添加人员失败"); + } + if(staffInfoMapper.insert(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("新增员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object updateStaffInfo(StaffInfo staffInfo) { + String picUrl = fileService.saveFile(staffInfo.getPicture()); + staffInfo.setPicture(picUrl); + + //修改人员到海康 + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(staffInfo.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(staffInfo.getStaffName()); + personSingleAddOrUpdateRequest.setGender(staffInfo.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(staffInfo.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(staffInfo.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(staffInfo.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(staffInfo.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(staffInfo.getStaffIdCard()); + String body = JSONObject.toJSONString(personSingleAddOrUpdateRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_SINGLE_UPDATE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个修改人员失败,海康response:{}", resultStr); + return ResponseData.error("单个修改人员失败"); + } + if(staffInfoMapper.updateById(staffInfo) > 0){ + return ResponseData.success(); + } + return ResponseData.error("更新员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteStaffInfo(StaffInfo staffInfo) { + //删除人员到海康 + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + List personList = new ArrayList<>(); + personList.add(staffInfo.getStaffCode()); + personBatchDeleteRequest.setPersonIds(personList); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,单个删除人员失败,海康response:{}", resultStr); + return ResponseData.error("单个删除人员失败"); + } + if(staffInfoMapper.deleteById(staffInfo.getId()) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object deleteBatchStaffInfo(List ids) { + List staffInfos = staffInfoMapper.selectBatchIds(ids); + List staffCodes = staffInfos.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + PersonBatchDeleteRequest personBatchDeleteRequest = new PersonBatchDeleteRequest(); + personBatchDeleteRequest.setPersonIds(staffCodes); + String body = JSONObject.toJSONString(personBatchDeleteRequest); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_DELETE, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量删除人员失败,海康response:{}", resultStr); + return ResponseData.error("批量删除人员失败"); + } + if(staffInfoMapper.deleteBatchIds(ids) > 0){ + return ResponseData.success(); + } + return ResponseData.error("删除员工异常"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List addStaffInfoBatch(List staffInfos) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(DeviceInfo.class, "员工导入校验"); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(staffInfos)) { + final Integer[] index = {0}; + List personList = new ArrayList<>(); + staffInfos.forEach(busConcentrator -> { + validator.validate(busConcentrator, beanPropertyBindingResult); + index[0]++; + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add(" 第" + index[0] + "行,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + PersonSingleAddOrUpdateRequest personSingleAddOrUpdateRequest = new PersonSingleAddOrUpdateRequest(); + personSingleAddOrUpdateRequest.setPersonId(busConcentrator.getStaffCode()); + personSingleAddOrUpdateRequest.setPersonName(busConcentrator.getStaffName()); + personSingleAddOrUpdateRequest.setGender(busConcentrator.getStaffGender()); + personSingleAddOrUpdateRequest.setPhoneNo(busConcentrator.getPhone()); + personSingleAddOrUpdateRequest.setOrgIndexCode(busConcentrator.getStaffType()); + personSingleAddOrUpdateRequest.setJobNo(busConcentrator.getStaffCode()); + List faces = new ArrayList<>(); + PersonSingleAddOrUpdateRequest.FaceData faceData = new PersonSingleAddOrUpdateRequest.FaceData(); + faceData.setFaceData(busConcentrator.getPicture()); + faces.add(faceData); + personSingleAddOrUpdateRequest.setFaces(faces); + personSingleAddOrUpdateRequest.setCertificateType("111"); + personSingleAddOrUpdateRequest.setCertificateNo(busConcentrator.getStaffIdCard()); + personList.add(personSingleAddOrUpdateRequest); + }); + List alreadyList = staffInfoMapper.selectBatchCodes(staffInfos); + if(CollectionUtil.isNotEmpty(alreadyList)){ + List staffCodes = alreadyList.stream().map(StaffInfo::getStaffCode).collect(Collectors.toList()); + list.add("员工staffCode:" + staffCodes + "数据已存在!"); + } + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //批量添加人员到海康 + String body = JSONObject.toJSONString(personList); + String resultStr = HikUtil.hikApi(HikUri.PERSON_BATCH_ADD, body); + JSONObject resultJson = (JSONObject) JSONObject.parse(resultStr); + if (!"0".equals(resultJson.get("code"))) { + log.error("请求海康,批量添加人员失败,海康response:{}", resultStr); + list.add("批量添加人员失败"); + } + //批量保存到数据库 + this.saveBatch(staffInfos); + } + return list; + } + + @Override + public StaffInfo selectStaffInfoByCode(StaffInfo staffInfo) { + StaffInfo info = staffInfoMapper.selectByCode(staffInfo.getStaffCode()); + return info; + } + + @Override + public List staffInfoList(StaffInfoRequest staffInfoRequest) { + try { + List list = staffInfoMapper.getStaffInfoList(staffInfoRequest); + list.forEach(staffInfo -> { + staffInfo.setStaffTypeName(dictService.getDictNameByCode("staffType", staffInfo.getStaffType())); + }); + return list; + } catch (DataAccessException ex) { + log.error("人员: 查询出现异常, keywords:{}, 异常:{}", staffInfoRequest.getKeywords(), ex); + } + return null; + } +} 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 new file mode 100644 index 0000000..d9fa377 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -0,0 +1,107 @@ +package com.casic.missiles.modular.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.dao.VisitorApplyMapper; +import com.casic.missiles.modular.dto.VisitorApplyRequest; +import com.casic.missiles.modular.dto.hik.AppointmentFreeRegisterRequest; +import com.casic.missiles.modular.dto.hik.VisitorInfo; +import com.casic.missiles.modular.enums.HikUri; +import com.casic.missiles.modular.model.VisitorApply; +import com.casic.missiles.modular.service.VisitorApplyService; +import com.casic.missiles.modular.util.HikUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 15:01 + */ +@Slf4j +@Service +public class VisitorApplyServiceImpl extends ServiceImpl implements VisitorApplyService { + @Autowired + private VisitorApplyMapper visitorApplyMapper; + + @Resource + private AbstractDictService dictService; + + @Override + public List visitorApplyListPage(Page page, VisitorApplyRequest visitorApplyRequest) { + try { + List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); + pageList.forEach(visitorApply ->{ + visitorApply.setVisitReason(dictService.getDictNameByCode("visitReason", visitorApply.getVisitReason())); + }); + return pageList; + } catch (DataAccessException ex) { + log.error("访客申请: 查询分页出现异常,异常:{}", ex); + } + return null; + } + + @Override + public int addVisitorApply(VisitorApply visitorApply) { + // TODO: 2022/7/26 数据重复处理 + AppointmentFreeRegisterRequest appointmentFreeRegisterRequest = new AppointmentFreeRegisterRequest(); + // TODO: 2022/7/25 ReceptionistId由前端传,数据源自海康,需考虑海康员工唯一标识与我们唯一标识对应问题 + //将时间转换为海康ISO8601格式 + DateTime inTimeDate = DateUtil.parse(visitorApply.getInTime()); + String inTimeISODate = DateUtil.format(inTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + DateTime outTimeDate = DateUtil.parse(visitorApply.getOutTime()); + String outTimeISODate = DateUtil.format(outTimeDate, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + + appointmentFreeRegisterRequest.setReceptionistId(visitorApply.getReceptionistId()); + appointmentFreeRegisterRequest.setPersonNum(1); + appointmentFreeRegisterRequest.setVisitStartTime(inTimeISODate); + appointmentFreeRegisterRequest.setVisitEndTime(outTimeISODate); + appointmentFreeRegisterRequest.setVisitPurpose(visitorApply.getVisitReason()); + + VisitorInfo visitorInfo = new VisitorInfo(); + visitorInfo.setVisitorName(visitorApply.getVisitorName()); + visitorInfo.setGender(visitorApply.getVisitorGender()); + visitorInfo.setPhoneNo(visitorApply.getVisitorPhone()); + visitorInfo.setCertificateNo(visitorApply.getIdCard()); + visitorInfo.setCertificateType(111); + appointmentFreeRegisterRequest.setVisitorInfo(visitorInfo); + + String body = JSONObject.toJSONString(appointmentFreeRegisterRequest); + String resultStr = HikUtil.hikApi(HikUri.APPOINTMENT_FREE_REGISTER, body); + JSONObject resultJson = (JSONObject)JSONObject.parse(resultStr); + if(!"0".equals(resultJson.get("code"))){ + log.error("请求海康,预约免登记失败,海康response:{}", resultStr); + return 0; + } + return visitorApplyMapper.insert(visitorApply); + } + + @Override + public int updateVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.updateById(visitorApply); + } + + @Override + public int deleteVisitorApply(VisitorApply visitorApply) { + return visitorApplyMapper.deleteById(visitorApply.getId()); + } + + @Override + public int deleteBatchVisitorApply(List ids) { + return deleteBatchVisitorApply(ids); + } + + @Override + public List addVisitorApplyBatch(List results) { + return null; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java index 4012170..4fe1e70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/Base64Util.java @@ -1,11 +1,12 @@ package com.casic.missiles.modular.util; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64Decoder; - import java.io.*; +@Slf4j public class Base64Util { /** * base64字符串转换成图片 @@ -84,5 +85,26 @@ return new String(Base64.encodeBase64(data)); } + public static String transformPictureToBase64(String loadPath){ + java.util.Base64.Encoder encoder = java.util.Base64.getEncoder(); //获取Base64编码器 + byte [] ImgContainer = null ; //数据集缓存器 + FileInputStream fileInputStream = null; //文件输入流 + try { +// System.out.println(LoadPath+DataName); + fileInputStream = new FileInputStream(loadPath); //到指定路径寻找文件 + ImgContainer = new byte[fileInputStream.available()]; //设置图片字节数据缓冲区大小 + fileInputStream.read(ImgContainer); //将数据流中的图片数据读进缓冲区 + String Base64ImgData = encoder.encodeToString(ImgContainer); //将图片编码转换成Base64格式的数据集 + fileInputStream.close(); //关闭数据流 + return Base64ImgData; //将缓冲区数据转换成字符数据返回 + } catch (FileNotFoundException e) { + log.error("找不到指定文件!"); + return ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java new file mode 100644 index 0000000..bde56a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/CaseInfoFactoryUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.util; + +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; +import com.casic.missiles.modular.dao.HikCaseDefineMapper; +import com.casic.missiles.modular.model.CaseCategoryLevel; +import com.casic.missiles.modular.model.CaseHazardLevel; +import com.casic.missiles.modular.model.CaseInfo; +import com.casic.missiles.modular.model.HikCaseDefine; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description: 安防事件工厂类 + * @Author: wangpeng + * @Date: 2022/7/21 16:32 + */ +@Component +public class CaseInfoFactoryUtil { + @Resource + private HikCaseDefineMapper hikCaseDefineMapper; + + @Resource + private HazardLevelMapper hazardLevelMapper; + + @Resource + private CategoryLevelMapper categoryLevelMapper; + + public CaseInfo getCaseInfo(Long eventType) { + //获取海康事件定义 + HikCaseDefine hikCaseDefine = hikCaseDefineMapper.getHikCaseDefine(eventType); + //不同事件类别对事件封装为可入库事件 + CaseInfo caseInfo = new CaseInfo(); + caseInfo.setHazardLevelCode(hikCaseDefine.getHazardLevelCode()); //危险级别code + CaseHazardLevel caseHazardLevel = hazardLevelMapper.getCaseHazardLevel(hikCaseDefine.getHazardLevelCode()); + caseInfo.setLevelName(caseHazardLevel.getName()); //危险级别 + caseInfo.setDescription(hikCaseDefine.getDescription()); //描述 + caseInfo.setCategoryLevelCode(hikCaseDefine.getCategoryLevelCode()); //事件类别code + CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(hikCaseDefine.getCategoryLevelCode()); + caseInfo.setTypeName(categoryLevel.getName()); //事件类别 + return caseInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java new file mode 100644 index 0000000..d0f20c9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/FileUtil.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.util; + +import lombok.extern.slf4j.Slf4j; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2022/7/20 14:01 + */ +@Slf4j +public class FileUtil { +// public String saveFile(String base64Image) { +// if (StrUtil.isNotEmpty(base64Image) && base64Image.startsWith("data:image")) { +// String uuid = UUID.randomUUID().toString().replaceAll("-", ""); +// String[] imageVals = Base64ImgUtils.getImageType(base64Image); +// String filePrex = uuid + imageVals[0]; +// String fileName = (new SimpleDateFormat("yyyy-MM")).format(new Date()); +// File dir = new File(this.filePath + fileName); +// if (!dir.exists()) { +// dir.mkdirs(); +// log.info("mkdir:{}", dir.getPath()); +// } +// +// String pathName = dir.getPath() + File.separator + filePrex; +// Base64ImgUtils.GenerateImage(imageVals[1], pathName); +// return fileName.concat(File.separator).concat(filePrex); +// } else { +// return base64Image; +// } +// } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java index da0f8ee..2dc14a2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/HikUtil.java @@ -41,9 +41,9 @@ * STEP5:组装请求参数 */ /** - * STEP6:调用接口 + * STEP6:调用接口,post请求application/json类型参数 */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 + String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null); return result; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java new file mode 100644 index 0000000..1cfa1ea --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/util/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.util; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2022/7/22 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 8fb0b2c..53f549f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -100,6 +100,18 @@ casic-server ${pro.version} + + com.casic + casic-file-support + ${admin.version} + + + + com.casic + casic-file + ${admin.version} + + org.springframework.boot diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 308dcad..9588e28 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -1,9 +1,9 @@ package com.casic.missiles; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,6 +19,7 @@ @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync @Slf4j +@MapperScan("com.casic.missiles.modular.dao") public class CasicApplication { public static void main(String[] args) { SpringApplication.run(CasicApplication.class, args); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8c18554..48b510b 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -1,10 +1,10 @@ server: - port: 8083 + port: 18083 ################### spring配置 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_template2.0?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root password: Casic203 jms: @@ -24,6 +24,10 @@ db: init: enable: false + #图片下载本地地址 + file: + uploadPath: D:\tmp\ + logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 6553b10..f646180 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 18083 # context-path: /callcenter/api ################### spring配置 ################### spring: diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 54d7252..0dbb1ed 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,5 +1,5 @@ server: - port: 11307 + port: 18083 ################### spring配置 ################### spring: datasource: diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 33cce3f..95b8eee 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -11,6 +11,13 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector ################### mybatis-plus配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + map-underscore-to-camel-case: true ################### guns配置 ################### casic: swagger-open: false #是否开启swagger (true/false) diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx new file mode 100644 index 0000000..5c8f135 --- /dev/null +++ b/casic-web/src/main/resources/config/export/DeviceTemp.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 new file mode 100644 index 0000000..bbff532 --- /dev/null +++ b/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx 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 new file mode 100644 index 0000000..c1b521a --- /dev/null +++ b/casic-web/src/main/resources/config/export/staffTemp.xlsx Binary files differ diff --git a/pom.xml b/pom.xml index bcae612..8fd6c47 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.casic casic-security-cockpit 2.0.0 - casic-security-cockpit + casic-security-cockpit pom casic-web @@ -26,7 +26,7 @@ 2.0.0.alpha - + 2.0.0.alpha 3.2.1 1.7